#!/bin/bash
set -e

# --- 配置变量 ---
# Git 仓库地址 (如果需要，请取消注释并配置)
# GIT_REPO_URL="https://gitee.com/XiaoBingZhangJian/xhs.git"

# Docker 镜像和服务名称
IMAGE_NAME="xhs-service"
CONTAINER_NAME="xhs-service-container"

# --- 自动计算路径 ---
# 获取脚本所在的目录，我们假定这就是包含 Dockerfile 和源码的目录
# 例如 /root/xhs/javaproject
SERVICE_DIR=$(cd "$(dirname "$0")" && pwd)
# 项目根目录被假定为服务目录的父目录
# 例如 /root/xhs
PROJECT_DIR=$(dirname "$SERVICE_DIR")

# --- 脚本开始 ---
echo "===== 开始部署 xhs 服务 ====="
echo "项目根目录: $PROJECT_DIR"
echo "服务目录: $SERVICE_DIR"

# 1. 更新代码
echo "进入项目根目录并从 Git 拉取最新代码..."
cd "$PROJECT_DIR"
git pull
echo "代码已更新至最新。"

# 2. 进入服务目录准备构建
echo "进入服务目录: $SERVICE_DIR"
cd "$SERVICE_DIR"

# 3. 检查 Dockerfile 是否存在
if [ ! -f "Dockerfile" ]; then
  echo "错误：在当前目录 '$SERVICE_DIR' 下未找到 Dockerfile！"
  echo "请确保 Dockerfile 文件位于正确的位置。"
  exit 1
fi
echo "Dockerfile 已找到。"

# 4. 使用 Docker 构建最新的镜像
echo "开始构建 Docker 镜像: $IMAGE_NAME"
# 使用当前目录 ($SERVICE_DIR) 作为 Docker build 的上下文
docker build -t "$IMAGE_NAME" .
echo "镜像构建成功。"

# 5. 停止并删除旧的同名容器（如果存在）
if [ "$(docker ps -a -q -f name=^/${CONTAINER_NAME}$)" ]; then
    echo "正在停止并删除旧容器 '$CONTAINER_NAME'..."
    docker stop "$CONTAINER_NAME"
    docker rm "$CONTAINER_NAME"
fi

# 6. 运行新的 Docker 容器
echo "启动新容器 '$CONTAINER_NAME'..."
docker run -d -p 8080:8080 --name "$CONTAINER_NAME" "$IMAGE_NAME"

echo ""
echo "===== 部署成功！====="
echo "服务正在容器 '$CONTAINER_NAME' 中运行，端口映射为 8080 -> 8080。"